<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>08_ES11-空值合并运算符</title>
</head>
<body>

  <script>
    // 空值合并运算符（Nullish Coalescing Operator）: ?? 语法
    // 作用：为表达式设置默认值
    // 语法：表达式1 ?? 表达式2
    // 如果表达式1为null或者undefined，则返回表达式2，否则返回表达式1

    // 1. 空值合并运算符与逻辑或运算符（||）的区别

    // 1.1 逻辑或运算符（||）会将所有假值（false、null、undefined、0、NaN、''）都视为假值，而空值合并运算符（??）只会将null和undefined视为假值
    // 1.2 逻辑或运算符（||）会进行类型转换，而空值合并运算符（??）不会进行类型转换
    // 1.3 逻辑或运算符（||）会返回第一个真值，而空值合并运算符（??）会返回第一个非null和undefined的值

    let info = undefined
    info = info ?? '默认值'
    console.log(info) // 默认值
    info = info || '默认值2';
    console.log(info) // 默认值2;

    let info2 = null
    info2 = info2 ?? '默认值'
    console.log(info2) // 默认值
    info2 = info2 || '默认值2';
    console.log(info2) // 默认值2;


  </script>
  
</body>
</html>